CREATE PROCEDURE SP_CARGA_STAGING_DIM_FORMAPAGAENTO(
	@DATA DATETIME
)
AS
BEGIN
	DECLARE @DATA_CARGA DATETIME,
			@cdFormaPagamento int,
			@Descricao VARCHAR(45),
			
			@IdFormaPagamento_df INT,
			@cdFormapagamento_df INT,
			@Descricao_df VARCHAR(45),
									
			@PROCESS INT
						
	DECLARE C_FORMA CURSOR FOR
		SELECT f.DataCarga, f.cdFormaPagamento, f.Descricao
		FROM FormaPagamentoAux AS f
		WHERE f.DataCarga = @DATA
	OPEN C_FORMA
	FETCH NEXT FROM C_FORMA INTO @DATA_CARGA, @cdFormaPagamento, @Descricao 
	WHILE(@@FETCH_STATUS = 0)
	BEGIN
		SELECT @cdFormapagamento_df = df.idFormaPagamento, @cdFormaPagamento_df = df.cdFormaPagamento, @Descricao_df = df.Descricao
		FROM DimFormaPagamento AS df
		WHERE (df.cdFormaPagamento = @cdFormaPagamento)		
		SET @PROCESS = ISNULL(@IdFormaPagamento_df,0)
		IF (@PROCESS <> 0)
		BEGIN				
			UPDATE DimFormaPagamento
			SET Descricao = @Descricao  
			WHERE cdFormaPagamento = @cdFormaPagamento
		END	
		ELSE
		BEGIN
			IF (NOT (@Descricao IS NULL))
			BEGIN
			INSERT INTO DimFormaPagamento (cdFormaPagamento, Descricao)
				VALUES (@cdFormaPagamento, @Descricao);
			END
		END	
		FETCH NEXT FROM C_FORMA INTO @DATA_CARGA, @cdFormaPagamento, @Descricao
	END
	CLOSE C_FORMA
	DEALLOCATE C_FORMA
END;
GO

SET DATEFORMAT DMY
EXEC SP_CARGA_STAGING_DIM_FORMAPAGAENTO '16/07/2012'

SELECT * FROM DimFormaPagamento
